package com.operator.Activitys.activity;

import android.os.Handler;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.google.gson.Gson;
import com.lljjcoder.Interface.OnCityItemClickListener;
import com.lljjcoder.bean.CityBean;
import com.lljjcoder.bean.DistrictBean;
import com.lljjcoder.bean.ProvinceBean;
import com.lljjcoder.citywheel.CityConfig;
import com.lljjcoder.style.citypickerview.CityPickerView;
import com.operator.Activitys.R;
import com.operator.Activitys.activity.base.BaseActivity;
import com.operator.Activitys.bean.State;
import com.operator.Activitys.bean.User;
import com.operator.Activitys.http.manager.UserManager;
import com.operator.Activitys.utils.CheckUtils;
import com.operator.Activitys.utils.Constant;
import com.operator.Activitys.utils.ToastUtils;

import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;

import butterknife.Bind;
import butterknife.OnClick;

/**
 * 项目名称：金泽云 手机app
 * 类描述：店铺信息
 * 创建人：张飞祥
 * 创建时间：2018/6/2 13:21
 * 修改人：张飞祥
 * 修改时间：2018/6/2 13:21
 * 修改备注：
 */
public class ShopMsgActivity extends BaseActivity {

    //返回按钮
    @Bind(R.id.iv_return)
    ImageView ivReturn;
    //标题
    @Bind(R.id.tv_title)
    TextView tvTitle;
    //店铺名称
    @Bind(R.id.et_shop_name)
    EditText etShopName;
    //店铺电话
    @Bind(R.id.et_shop_mobile)
    EditText etShopMobile;
    //所属区域
    @Bind(R.id.tv_shop_region)
    TextView tvShopRegion;
    //店铺地址
    @Bind(R.id.et_shop_address)
    EditText etShopAddress;
    //联系电话
    @Bind(R.id.et_shop_phone)
    EditText etShopPhone;
    //业务员名称
    @Bind(R.id.et_shop_work_name)
    EditText etShopWorkName;
    //业务员电话
    @Bind(R.id.et_shop_work_phone)
    EditText etShopWorkPhone;



    //TODO 当前 内存中 用户信息
    private User mACacheUser = null;
    //初始化网络请求
    public UserManager mApiManager;
    //省市区 三级联动 申明对象
    CityPickerView mPicker = new CityPickerView();

    //店铺信息
    private String mStoreName;
    //店铺电话
    private String mMobile;
    //所属区域
    private String mArea;
    //店铺地址
    private String mAddress;
    //联系电话
    private String mLinkTel;
    //业务员名称
    private String mWorkName;
    //业务员电话
    private String mWorkPhone;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_shop_msg);
        //网络请求接口 常驻方法
        mApiManager = mApiManager.getUserApiManager(this, this.getTaskId());

        //设置状态栏为透明
        setThemeTransparent();
        //TODO 获取内存用户实体
        Gson gson = new Gson();
        mACacheUser = gson.fromJson(mACache.getAsJSONObject(Constant.CACHE_USER) + "", User.class);

        //标题
        tvTitle.setText("店铺信息");
        //显示返回按钮
        ivReturn.setVisibility(View.VISIBLE);
        /**
         * 预先加载仿iOS滚轮实现的全部数据
         */
        mPicker.init(this);
    }

    @Override
    protected void initData() {

        //加载数据
        if (mACacheUser != null) {
            //设置店铺名称
            etShopName.setText(mACacheUser.getStoreName());
            //设置店铺电话
            etShopMobile.setText(mACacheUser.getMobile());
            //设置所属区域
            tvShopRegion.setText(mACacheUser.getArea());
            //设置店铺地址
            etShopAddress.setText(mACacheUser.getAddress());
            //设置联系电话
            etShopPhone.setText(mACacheUser.getLinkTel());
            //设置业务员名称
            etShopWorkName.setText(mACacheUser.getCountermanName());
            //设置业务员电话
            etShopWorkPhone.setText(mACacheUser.getCountermanTel());
        }
    }

    /**
     * 按钮点击事件
     *
     * @return
     */
    @OnClick({R.id.iv_return, R.id.btn_shop_update, R.id.tv_shop_region})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.iv_return:            //返回按钮
                finish();
                break;
            case R.id.tv_shop_region:       //所属区域
                setSelectionArea();
                break;
            case R.id.btn_shop_update:      //修改按钮
                initUpdateShopHttp();
                break;
        }
    }

    /**
     * 选择区域
     */
    private void setSelectionArea() {
        //添加默认的配置
        CityConfig cityConfig = new CityConfig.Builder()
                .titleTextColor("#808080")      //标题文字颜  色
                .titleBackgroundColor("#E9E9E9")//标题栏背景色
                .confirTextColor("#699aff")     //确认按钮文字颜色
                .confirmText("确认")            //确认按钮文字
                .confirmTextSize(18)            //确认按钮文字大小
                .cancelTextColor("#699aff")     //取消按钮文字颜色
                .cancelText("取消")             //取消按钮文字
                .cancelTextSize(18)             //取消按钮文字大小
                .province("吉林省")             //默认显示的省份
                .city("长春市")                 //默认显示省份下面的城市
                .district("南关区")             //默认显示省市下面的区县数据
                .provinceCyclic(false)          //省份滚轮是否可以循环滚动
                .cityCyclic(false)              //城市滚轮是否可以循环滚动
                .districtCyclic(false)          //区县滚轮是否循环滚动
                .setShowGAT(true)               //是否显示港澳台数据，默认不显示
                .build();
        mPicker.setConfig(cityConfig);

        //监听选择点击事件及返回结果
        mPicker.setOnCityItemClickListener(new OnCityItemClickListener() {
            @Override
            public void onSelected(ProvinceBean province, CityBean city, DistrictBean district) {

                //定义区域变量
                StringBuffer sBuffer = new StringBuffer("");

                //省份
                if (province != null) {
                    sBuffer.append(province + "-");
                }

                //城市
                if (city != null) {
                    sBuffer.append(city + "-");
                }

                //地区
                if (district != null) {
                    sBuffer.append(district);
                }

                //设置 区域
                tvShopRegion.setText(sBuffer.toString());
            }

            @Override
            public void onCancel() {
                ToastUtils.showShort(ShopMsgActivity.this, "已取消");
            }
        });

        //显示
        mPicker.showCityPicker();
    }

    /**
     * 修改店铺信息
     */
    private void initUpdateShopHttp() {
        //店铺名称
        mStoreName = etShopName.getText().toString();
        //店铺电话
        mMobile = etShopMobile.getText().toString();
        //所属区域
        mArea = tvShopRegion.getText().toString();
        //店铺地址
        mAddress = etShopAddress.getText().toString();
        //联系电话
        mLinkTel = etShopPhone.getText().toString();
        //业务员姓名
        mWorkName = etShopWorkName.getText().toString();
        //业务员电话
        mWorkPhone = etShopWorkPhone.getText().toString();

        /**
         * 1.判断每个字段非空
         * 2.判断手机号码格式
         * 3.判断密码格式格式
         * 4.判断两次密码是否一致
         * 5.判断验证码
         */
        if (mStoreName.equals("") || mMobile.equals("") || mArea.equals("") || mAddress.equals("")
                || mLinkTel.equals("")) {
            ToastUtils.showShort(this, "请您认真填写，部分内容不许为空！");
        } else if (!CheckUtils.isMobile(mMobile)) {
            ToastUtils.showShort(this, "店铺电话号码格式不正确！");
        } else {
            //弹出提示
            initShowTimeDialog("正在修改店铺信息，请稍后....", this);
            //开始网络请求
            mApiManager.userUpdateShop(mACacheUser.getId(), mStoreName,mMobile,mArea, mAddress, mLinkTel, mWorkName, mWorkPhone);
        }
    }

    /**
     * 响应 修改店铺信息 出错
     */
    @Subscriber(tag = Constant.BUS_MY_UPDATE_SHOP_ERROR)
    public void onUpdateShopError(String strError) {
        //延时 1s
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //销毁弹窗
                timeDialog.dismiss();
                //弹出提示
                ToastUtils.showShort(ShopMsgActivity.this, "网络连接不稳定，请重试！");
            }
        }, 1000);
    }

    /**
     * 加载 修改店铺信息 返回结果
     */
    @Subscriber(tag = Constant.BUS_MY_UPDATE_SHOP)
    public void onUpdateShopError(final State state) {
        //延时 1s
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                //销毁弹窗
                timeDialog.dismiss();
                //返回值判断
                if (state.getState().equals("1")) {

                    //TODO 修改成功保存相应的信息
                    mACacheUser.setStoreName(mStoreName);       //名称
                    mACacheUser.setMobile(mMobile);             //店铺电话
                    mACacheUser.setArea(mArea);                 //区域
                    mACacheUser.setAddress(mAddress);           //地址
                    mACacheUser.setLinkTel(mLinkTel);           //联系电话
                    mACacheUser.setCountermanName(mWorkName);   //业务员名称
                    mACacheUser.setCountermanTel(mWorkPhone);   //业务员电话

                    //TODO 将当前用户实体存储在 本地
                    mACache.put(Constant.CACHE_USER, new Gson().toJson(mACacheUser));
                    //发送更新 消息
                    EventBus.getDefault().post(mACacheUser, Constant.BUS_MY_USER);
                    //销毁当前页面
                    finish();
                }
                ToastUtils.showShort(ShopMsgActivity.this, state.getMsg());
            }
        }, 1000);
    }
}
